# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.1136+1.1046.1.353 -> 1.1137 # arch/i386/kernel/process.c 1.51.1.2 -> 1.54 # kernel/ksyms.c 1.203.1.10 -> 1.209 # include/asm-ppc64/unistd.h 1.20.1.2 -> 1.26 # include/asm-mips/unistd.h 1.6.1.2 -> 1.10 # include/linux/mm.h 1.121.1.5 -> 1.124 # include/linux/sched.h 1.151.1.8 -> 1.159 # kernel/sysctl.c 1.46.1.5 -> 1.50 # arch/ppc64/kernel/chrp_setup.c 1.29.1.1 -> 1.32 # drivers/char/drm/r128_cce.c 1.12.1.2 -> 1.15 # arch/i386/kernel/Makefile 1.44.1.2 -> 1.47 # include/asm-h8300/thread_info.h 1.1.1.2 -> 1.4 # drivers/media/video/Makefile 1.18.1.2 -> 1.21 # include/linux/irq.h 1.6.1.2 -> 1.11 # include/linux/pci_ids.h 1.103.1.10 -> 1.108 # arch/ppc64/kernel/irq.c 1.29.1.2 -> 1.31 # drivers/acpi/pci_irq.c 1.16.1.4 -> 1.21 # mm/memory.c 1.123.1.5 -> 1.130 # include/linux/pci.h 1.90.1.13 -> 1.96 # arch/ppc64/kernel/setup.c 1.28.1.1 -> 1.30 # include/asm-h8300/unistd.h 1.1.1.1 -> 1.4 # arch/ppc64/kernel/traps.c 1.19.1.1 -> 1.21 # arch/ppc64/kernel/xics.c 1.24.1.1 -> 1.26 # drivers/net/tg3.c 1.72.1.8 -> 1.76 # usr/Makefile 1.9 -> 1.10 # arch/ppc64/kernel/open_pic.c 1.15 -> 1.16 # arch/ppc64/mm/init.c 1.50 -> 1.51 # drivers/char/agp/i460-agp.c 1.25.1.2 -> 1.29 # arch/ppc64/kernel/process.c 1.35.1.2 -> 1.39 # include/linux/time.h 1.16.1.5 -> 1.20 # Makefile 1.410.1.10 -> 1.418 # include/asm-x86_64/unistd.h 1.14.1.2 -> 1.18 # arch/ppc64/kernel/syscalls.c 1.11.1.1 -> 1.14 # arch/ppc64/kernel/sys_ppc32.c 1.66 -> 1.67 # arch/ppc64/kernel/iSeries_setup.c 1.15.1.1 -> 1.18 # arch/ppc64/kernel/smp.c 1.40 -> 1.41 # include/asm-i386/pgtable.h 1.35.1.2 -> 1.38 # arch/ppc64/mm/fault.c 1.10.1.1 -> 1.13 # mm/slab.c 1.93.1.3 -> 1.97 # drivers/char/agp/hp-agp.c 1.24.1.2 -> 1.28 # drivers/char/drm/drm_drv.h 1.20.1.3 -> 1.23 # kernel/timer.c 1.59.1.4 -> 1.65 # arch/ppc64/kernel/pci.c 1.33.1.2 -> 1.37 # arch/ppc64/kernel/misc.S 1.62 -> 1.63 # drivers/serial/Kconfig 1.8.1.6 -> 1.15 # arch/ia64/Kconfig 1.38 -> 1.39 # drivers/video/radeonfb.c 1.26.1.4 -> 1.29 # sound/oss/cs4281/cs4281m.c 1.21.1.4 -> 1.24 # diff -Nru a/arch/ia64/Kconfig b/arch/ia64/Kconfig --- a/arch/ia64/Kconfig Sat Aug 16 00:35:50 2003 +++ b/arch/ia64/Kconfig Sat Aug 16 00:35:50 2003 @@ -648,6 +648,33 @@ keys are documented in . Don't say Y unless you really know what this hack does. +config IA64_EARLY_PRINTK + bool "Early printk support" + depends on DEBUG_KERNEL && !IA64_GENERIC + help + Selecting this option uses the VGA screen or serial console for + printk() output before the consoles are initialised. It is useful + for debugging problems early in the boot process, but only if you + have a suitable VGA/serial console attached. If you're unsure, + select N. + +config IA64_EARLY_PRINTK_UART + bool "Early printk on MMIO serial port" + depends on IA64_EARLY_PRINTK + +config IA64_EARLY_PRINTK_UART_BASE + hex "UART MMIO base address" + depends on IA64_EARLY_PRINTK_UART + default "ff5e0000" + +config IA64_EARLY_PRINTK_VGA + bool "Early printk on VGA" + depends on IA64_EARLY_PRINTK + +config IA64_EARLY_PRINTK_SGI_SN + bool "Early printk on SGI SN serial console" + depends on IA64_EARLY_PRINTK && (IA64_GENERIC || IA64_SGI_SN2) + config DEBUG_SLAB bool "Debug memory allocations" depends on DEBUG_KERNEL diff -Nru a/arch/ppc64/kernel/irq.c b/arch/ppc64/kernel/irq.c --- a/arch/ppc64/kernel/irq.c Sat Aug 16 00:35:50 2003 +++ b/arch/ppc64/kernel/irq.c Sat Aug 16 00:35:50 2003 @@ -72,40 +72,6 @@ int ppc_spurious_interrupts = 0; unsigned long lpEvent_count = 0; -/* nasty hack for shared irq's since we need to do kmalloc calls but - * can't very early in the boot when we need to do a request irq. - * this needs to be removed. - * -- Cort - */ -#define IRQ_KMALLOC_ENTRIES 16 -static int cache_bitmask = 0; -static struct irqaction malloc_cache[IRQ_KMALLOC_ENTRIES]; -extern int mem_init_done; - -void *irq_kmalloc(size_t size, int pri) -{ - unsigned int i; - if ( mem_init_done ) - return kmalloc(size,pri); - for ( i = 0; i < IRQ_KMALLOC_ENTRIES ; i++ ) - if ( ! ( cache_bitmask & (1< #include #include +#include #include #include #include @@ -490,23 +491,38 @@ ops->cppr_info(boot_cpuid, 0xff); iosync(); - if (xics_irq_8259_cascade != -1) { + + ppc64_boot_msg(0x21, "XICS Done"); +} + +/* + * We cant do this in init_IRQ because we need the memory subsystem up for + * request_irq() + */ +static int __init xics_setup_i8259(void) +{ + if (naca->interrupt_controller == IC_PPC_XIC && + xics_irq_8259_cascade != -1) { if (request_irq(xics_irq_8259_cascade + XICS_IRQ_OFFSET, no_action, 0, "8259 cascade", 0)) printk(KERN_ERR "xics_init_IRQ: couldn't get 8259 cascade\n"); i8259_init(); } + return 0; +} +arch_initcall(xics_setup_i8259); #ifdef CONFIG_SMP +void xics_request_IPIs(void) +{ real_irq_to_virt_map[XICS_IPI] = virt_irq_to_real_map[XICS_IPI] = XICS_IPI; /* IPIs are marked SA_INTERRUPT as they must run with irqs disabled */ request_irq(XICS_IPI + XICS_IRQ_OFFSET, xics_ipi_action, SA_INTERRUPT, "IPI", 0); irq_desc[XICS_IPI+XICS_IRQ_OFFSET].status |= IRQ_PER_CPU; -#endif - ppc64_boot_msg(0x21, "XICS Done"); } +#endif void xics_set_affinity(unsigned int virq, unsigned long cpumask) { diff -Nru a/arch/ppc64/mm/init.c b/arch/ppc64/mm/init.c --- a/arch/ppc64/mm/init.c Sat Aug 16 00:35:50 2003 +++ b/arch/ppc64/mm/init.c Sat Aug 16 00:35:50 2003 @@ -57,8 +57,8 @@ #include #include #include - #include +#include #ifdef CONFIG_PPC_ISERIES #include @@ -69,9 +69,6 @@ unsigned long ioremap_bot = IMALLOC_BASE; extern pgd_t swapper_pg_dir[]; -extern char __init_begin, __init_end; -extern char _start[], _end[]; -extern char _stext[], etext[]; extern struct task_struct *current_set[NR_CPUS]; extern pgd_t ioremap_dir[]; @@ -384,15 +381,15 @@ { unsigned long addr; - addr = (unsigned long)(&__init_begin); - for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) { + addr = (unsigned long)__init_begin; + for (; addr < (unsigned long)__init_end; addr += PAGE_SIZE) { ClearPageReserved(virt_to_page(addr)); set_page_count(virt_to_page(addr), 1); free_page(addr); totalram_pages++; } printk ("Freeing unused kernel memory: %luk freed\n", - (&__init_end - &__init_begin) >> 10); + ((unsigned long)__init_end - (unsigned long)__init_begin) >> 10); } #ifdef CONFIG_BLK_DEV_INITRD @@ -589,11 +586,11 @@ addr += PAGE_SIZE) { if (!PageReserved(virt_to_page(addr))) continue; - if (addr < (ulong) etext) + if (addr < (unsigned long)_etext) codepages++; - else if (addr >= (unsigned long)&__init_begin - && addr < (unsigned long)&__init_end) + else if (addr >= (unsigned long)__init_begin + && addr < (unsigned long)__init_end) initpages++; else if (addr < klimit) datapages++; diff -Nru a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c --- a/drivers/acpi/pci_irq.c Sat Aug 16 00:35:50 2003 +++ b/drivers/acpi/pci_irq.c Sat Aug 16 00:35:50 2003 @@ -24,6 +24,8 @@ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +#include + #include #include #include @@ -35,6 +37,9 @@ #include #ifdef CONFIG_X86_IO_APIC #include +#endif +#ifdef CONFIG_IOSAPIC +# include #endif #include #include diff -Nru a/drivers/media/video/Makefile b/drivers/media/video/Makefile --- a/drivers/media/video/Makefile Sat Aug 16 00:35:50 2003 +++ b/drivers/media/video/Makefile Sat Aug 16 00:35:50 2003 @@ -6,6 +6,8 @@ bttv-risc.o bttv-vbi.o zoran-objs := zr36120.o zr36120_i2c.o zr36120_mem.o +obj-y := dummy.o + obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-common.o v4l1-compat.o obj-$(CONFIG_VIDEO_BT848) += bttv.o msp3400.o tvaudio.o \ diff -Nru a/kernel/sysctl.c b/kernel/sysctl.c --- a/kernel/sysctl.c Sat Aug 16 00:35:50 2003 +++ b/kernel/sysctl.c Sat Aug 16 00:35:50 2003 @@ -580,6 +580,16 @@ .mode = 0644, .proc_handler = &proc_dointvec, }, +#ifdef CONFIG_SMP + { + .ctl_name = KERN_CACHEDECAYTICKS, + .procname = "cache_decay_ticks", + .data = &cache_decay_ticks, + .maxlen = sizeof(cache_decay_ticks), + .mode = 0644, + .proc_handler = &proc_doulongvec_minmax, + }, +#endif { .ctl_name = 0 } }; diff -Nru a/mm/memory.c b/mm/memory.c --- a/mm/memory.c Sat Aug 16 00:35:50 2003 +++ b/mm/memory.c Sat Aug 16 00:35:50 2003 @@ -114,8 +114,10 @@ } pmd = pmd_offset(dir, 0); pgd_clear(dir); - for (j = 0; j < PTRS_PER_PMD ; j++) + for (j = 0; j < PTRS_PER_PMD ; j++) { + prefetchw(pmd + j + PREFETCH_STRIDE/sizeof(*pmd)); free_one_pmd(tlb, pmd+j); + } pmd_free_tlb(tlb, pmd); }